added samples
[windows-sources.git] / sdk / samples / all in on code / Visual Studio 2008 / CSSL3SocketClient / MainPage.xaml.cs
bloba9597f38b23581b9a8ae3ebe9edab6fd77022b92
1 /****************************** Module Header ******************************\
2 * Module Name: MainPage.xaml.cs
3 * Project: CSSL3SocketClient
4 * Copyright (c) Microsoft Corporation.
5 *
6 * Silverlight socket client codebehind file.
7 *
8 * This source is subject to the Microsoft Public License.
9 * See http://www.microsoft.com/opensource/licenses.mspx#Ms-PL.
10 * All other rights reserved.
12 * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
13 * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
15 \***************************************************************************/
17 using System;
18 using System.Collections.Generic;
19 using System.Linq;
20 using System.Net;
21 using System.Windows;
22 using System.Windows.Controls;
23 using System.Windows.Documents;
24 using System.Windows.Input;
25 using System.Windows.Media;
26 using System.Windows.Media.Animation;
27 using System.Windows.Shapes;
28 using System.Net.Sockets;
29 using System.Text;
30 using System.Threading;
31 using CSSL3SocketClient;
33 namespace CSSL3SocketClient
35 public partial class MainPage : UserControl
37 public MainPage()
39 InitializeComponent();
42 ~MainPage()
44 if (_client != null)
45 _client.Close();
48 SocketClient _client;
50 // Handle "Connect" button click event.
51 private void btnConnect_Click(object sender, RoutedEventArgs e)
53 btnConnect.IsEnabled = false;
54 OpenSocketClientAsync(tboxServerAddress.Text);
57 // Handle "Send" button click event.
58 private void btnSend_Click(object sender, RoutedEventArgs e)
60 try
62 if (_client != null)
64 _client.SendAsync(tboxMessage.Text);
67 catch (Exception ex)
69 MessageBox.Show("Exception occured when sending message:" + ex.Message);
70 CloseSocketClient();
71 return;
75 // Close SocketClient
76 void CloseSocketClient()
78 if (_client != null)
80 _client.Close();
81 _client = null;
84 // Update UI
85 btnConnect.IsEnabled = true;
86 btnSend.IsEnabled = false;
89 // Create SocketClient and connect to server
91 // For convience, we use 127.0.0.1 address to connect socket server
92 // at local. To let client access socket server at differnt machine
93 // on network, input server ip address in textbox and click 'connect'.
94 // To let socket server accessible from network, please see the
95 // comment in CCSL3SocketServer.
96 bool OpenSocketClientAsync(string ip)
98 try
100 var endpoint = new IPEndPoint(
101 IPAddress.Parse(ip),
102 4502);
104 _client = new SocketClient(
105 endpoint.AddressFamily,
106 SocketType.Stream,
107 ProtocolType.Tcp);
109 // Register event
110 _client.ClientConnected += new EventHandler<SocketMessageEventArgs>(_client_ClientConnected);
111 _client.MessageReceived += new EventHandler<SocketMessageEventArgs>(_client_MessageReceived);
112 _client.MessageSended += new EventHandler<SocketMessageEventArgs>(_client_MessageSended);
114 _client.ConnectAsync(endpoint);
115 return true;
117 catch (Exception ex)
119 MessageBox.Show("Exception occured when Connecting Socket: " + ex.Message);
120 CloseSocketClient();
121 return false;
125 void _client_ClientConnected(object sender, SocketMessageEventArgs e)
127 Dispatcher.BeginInvoke(delegate
129 // If connect successful, start receiving message
130 if (e.Error == null)
134 _client.StartReceiving();
136 catch (Exception ex)
138 MessageBox.Show("Exception occured when creating SocketClient:" + ex.Message);
139 CloseSocketClient();
140 return;
142 // Update UI
143 btnConnect.IsEnabled = false;
144 btnSend.IsEnabled = true;
145 tbSocketStatus.Text = "Connected";
147 else
149 _client.Close();
150 btnConnect.IsEnabled = true;
151 tbSocketStatus.Text = "Connect failed: " + e.Error.Message;
156 // Handle message received event
157 void _client_MessageSended(object sender, SocketMessageEventArgs e)
159 Dispatcher.BeginInvoke(delegate
161 if (e.Error == null)
162 tbSocketStatus.Text = "Sended";
163 else
165 tbSocketStatus.Text = "Send failed: " + e.Error.Message;
166 CloseSocketClient();
171 // Handle message sended event
172 void _client_MessageReceived(object sender, SocketMessageEventArgs e)
174 Dispatcher.BeginInvoke(delegate
176 if (e.Error == null)
178 tbSocketStatus.Text = "Received";
179 lb1.Items.Insert(0, e.Data);
181 else
183 tbSocketStatus.Text = "Receive failed: " + e.Error.Message;
184 CloseSocketClient();